\newpage
\section{Utiliser RGtk2}

\subsection{Prérequis} 
\paragraph{}
Vous devez avoir une version de R récente déjà présente sur votre ordinateur : le mieux est de récupérer les sources les plus à jour et de les compiler directement pour votre système. 

\paragraph{}
Avant tout chose il est nécessaire d'avoir installé le package cairoDevice, car RGtk2 se base dessus pour certains composants graphiques. Ce package est disponible dans la liste des packages R, à l'adresse http://cran.r-project.org/ section "Packages", "sorted by Names", cairoDevice, puis de le télécharger en cliquant sur :Package source: cairoDevice\_2.19.tar.gz. Une fois l'archive téléchargée, pour l'installer il suffit de lancer une console, de se placer dans le dossier où se trouve l'archive, lancer R avec la commande "R", puis de taper la ligne suivante: 
\begin{lstlisting}
> install.packages("cairoDevice_2.19.tar.gz")
\end{lstlisting}

\paragraph{}
Le package RGtk2 se trouve dans la liste des packages disponibles pour R à cette adresse : http://cran.r-project.org/ section "Packages", "sorted by Names", "RGtk2". Le fichier à récupérer est le "package source" en tar.gz. Une fois que ce fichier est téléchargé, lancez une invite de commande, placez-vous dans le dossier où vous avez téléchargé l'archive, taper "R" pour lancer R et saisissez : 

\begin{lstlisting}
> install.packages("RGtk2_2.20.25.tar.gz")
\end{lstlisting}

\paragraph{}
Une fois l'installation terminée vous devez linker le package dans l'environnement courant (et vous devrez le faire à chaque début de session R où vous aurez besoin de RGtk2) : 

\begin{lstlisting}
> library(RGtk2)
\end{lstlisting}
\newpage

\subsection{Première fen\^etre avec RGtk2}

\paragraph{}
Voici un code court qui va nous permettre d'afficher une fen\^etre avec le label "hello world". \\

\begin{lstlisting}
>library(RGtk2)
 
createWindow <- function()
{
    window <- gtkWindow()
 
    label <- gtkLabel("Hello World")
    window$add(label)
}
 
>createWindow()
\end{lstlisting}

\begin{center}
\includegraphics[scale=0.5]{hello.png}\\
\textit{Résultat du code ci-dessus}
\end{center}

\paragraph{}
Maintenant on va expliquer chacune des lignes de code. La première ligne \\ \textbf{window <- gtkWindow()} nous permet de créer une fen\^etre vide. Ensuite l'appel à la fonction \textbf{gtkLabel()} permet de créer un label qu'il faudra ensuite ajouter à la vue car pour le moment la vue est vide m\^eme si les éléments à ajouter sont déclarés. Enfin gr\^ace à la dernière ligne, \textbf{window\$add(label)} on ajoute le label à la vue. \\

\subsection{Quelques fen\^etres utiles}

\subsubsection{Une fen\^etre en plein écran}
\paragraph{}
Pour afficher une fen\^etre en plein écran, il faut créer la vue et ensuite lui demander de passer en plein écran. 

\begin{lstlisting}
> win <- gtkWindow()
> gtkWindowFullscreen(win)
\end{lstlisting}

\paragraph{}
La fonction \textbf{gtkWindowFullscreen(win)} prend en paramètre un objet de type gtkWindow. 

\subsubsection{Des onglets dans la vue}
\paragraph{}
Une fen\^etre avec des onglets est une chose intéressante à avoir pour l'interface utilisateur. 

\begin{lstlisting}
> window.master <- gtkWindow("toplevel",show=FALSE)
> 
> forms.notebook <- gtkNotebook()
> forms.notebook$setTabPos("top")
> 
> form1.notebook <- gtkNotebook()
> form1.notebook$setTabPos("top")
> 
> form1.boxp1.y3 <- gtkVBox(FALSE,3)
> form1.boxp2.ud <- gtkVBox(FALSE,2)
> forms.notebook$add(form1.notebook)
> window.master$add(forms.notebook)
> 
> window.master$show()

\end{lstlisting}

\begin{itemize}
\item \textbf{gtkNotebook} est un conteneur de vue avec des onglets. \\
\item \textbf{form1.boxp1.y3 <- gtkVBox(FALSE,3)} permet de créer une gtkVBox qui sera notre premier onglet. \\
\item \textbf{forms.notebook\$add(form1.notebook)} : on ajoute le formulaire form1 au formulaire principal forms qui sera ensuite ajouté à la vue via la commande \textbf{window.master\$add(forms.notebook)}. \\
\item \textbf{window.master\$show()} affiche la fenêtre complète. L'appel de cette fonction est obligatoire car nous avions choisi de ne pas afficher la fenêtre lors de sa création. 
\end{itemize}

\paragraph{}
La gestion des onglets via un gtkNotebook a évoluée. La méthode décrite dans la section "Comment Fonctionne RGtk2" dans la partie "Descriptions techniques", montrera qu'il est devenu plus simple de gérer les onglets.

\subsection{La gestion des événements}
\paragraph{}
La gestion des événements dans rgtk2 n'est pas beaucoup documentée. Mais les fonctions pour les gérer existent dans le package. 




